/*----------------------------------------
  
  GetRSS
  
  RSS収集クラス
  
----------------------------------------*/

// class
function GetLiveInfo( loadback ) {
	this.page = 1;
	this.load = 0;
	this.url = 'http://live.nicovideo.jp/recent/rss?tab=&sort=start&p=';
	this.loadback = loadback;
	this.lastLive = "" //前回収集した際の最新の放送
	this.nowLastLive = "" //今回収集した際の最新の放送
	
	this.reloadTime = 15000; //RSSを読み込みに行くタイミング
	this.allRloadTime = 20; //RSSのすべてのページを読みに行くタイミング
	
	return this;
}


/*----------------------------------------
  header
----------------------------------------*/
GetLiveInfo.prototype.nowPageRSSDownload = GetLiveInfo_nowPageRSSDownload;
GetLiveInfo.prototype.setNextLoad = GetLiveInfo_setNextLoad;

/*----------------------------------------
  method
----------------------------------------*/

/*
  nowPageRSSDownload
  GetLiveInfo classにある、page変数のページ番号を元にRSSを取得します。
  
*/

function GetLiveInfo_nowPageRSSDownload(allPage) {
	
	if ( this.page == 1 ){
		this.lastLive = this.nowLastLive;
		this.nowLastLive = "";
        this.load++;
	}
	
	var _GetLiveInfo = this;
	var throbber = new Throbber();
	throbber.start();
	
	$.ajax({
		url: this.url+this.page,
		type: 'GET',
		dataType: "xml",
		timeout: 3000,
		
		success: function(xml){
			if ( $(xml).find('item').length > 0 ){ // レコード数のチェック 0の場合は終了
				
				_GetLiveInfo.loadback(xml);
				
				// 1ページ目の時、最新の放送を記録
				if ( _GetLiveInfo.page == 1 )
					_GetLiveInfo.nowLastLive = $(xml).find("item:has(type:contains('community')):eq(0)").find("guid").text();
				
				
				// 次のページを読み込むか否か
				// 読み込む場合に処理が必要
				// 読み込む必要が無ければ終了
				
				if ( allPage ) {
					
					_GetLiveInfo.page++;
					_GetLiveInfo.nowPageRSSDownload(allPage);
					
				} else if ( $(xml).find("item guid:contains('"+_GetLiveInfo.lastLive+"')").length != 0 ) {
					
					_GetLiveInfo.page++;
					_GetLiveInfo.nowPageRSSDownload();
					
				} else {
					_GetLiveInfo.setNextLoad();
					throbber.stop();
				}
				
			}else{
				
				_GetLiveInfo.setNextLoad();
				throbber.stop();
				
			}
		},
		
		error: function (XMLHttpRequest, textStatus, errorThrown){
			setTimeout(function(){_GetLiveInfo.nowPageRSSDownload()},5000);
		}
		
	});
}


function GetLiveInfo_setNextLoad(){
    this.page = 1;
    _GetLiveInfo = this;
	setTimeout(function(){
		if ( _GetLiveInfo.load % _GetLiveInfo.allRloadTime == 0 ){
			_GetLiveInfo.nowPageRSSDownload(true);
		}else{
			console.log( _GetLiveInfo.nowPageRSSDownload );
            _GetLiveInfo.nowPageRSSDownload();
		}
	},_GetLiveInfo.reloadTime);
}
